<?php
declare (strict_types = 1);

namespace app\adminapi\controller;

use think\Exception;
use think\exception\ValidateException;
use think\Request;

class Type
{
    /**
     * 显示资源列表
     * @return \think\response\Json|void
     */
    public function index()
    {
        $limit = \request()->get('limit',10);
        $page = \request()->get('page',1);
        if (!is_numeric($limit)) {
            return  fail();
        }

        if (!is_numeric($page)) {
            return  fail();
        }
        # 从业务逻辑层获取type
        $data = \app\adminapi\business\Type::getList($limit,$page);

        return  success($data);

    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        try {
            # 接值
            $params = \request()->all();
            $params['type_name'] = trim($params['type_name']);
            # 参数验证 类型名称唯一
            validate(\app\adminapi\validate\Type::class)->check($params);
            # 调用业务逻辑层进行入库
            return \app\adminapi\business\Type::addType($params);

        }catch (ValidateException $exception) {
            return  fail($exception->getCode(),$exception->getMessage());
        }
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {

        try {
            if (!is_numeric($id)) {
                return  fail();
            }
            $info = \app\adminapi\business\Type::getInfo($id);
            return  success($info);
        }catch (\Exception $exception) {
            return  fail($exception->getCode(),$exception->getMessage());
        }
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        if(!is_numeric($id)) {
            return  fail();
        }
        // 删除 业务逻辑层
        \app\adminapi\business\Type::deleteType($id);
    }
}
